package com.henghong.CouponDemo.controller;

import com.henghong.CouponDemo.result.Result;
import com.henghong.CouponDemo.service.SearchService;
import com.henghong.CouponDemo.vo.SearchCouponVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * reated by bishukai on 2025/02/17
 */
@RestController
@RequestMapping("/coupon")
@Slf4j
@Api(tags = "优惠券搜索接口")
public class SearchController {

    @Autowired
    private SearchService searchService;

    @GetMapping("/searchAll")
    @ApiOperation(value = "全て検索ボタンを押下")
    public Result<List<SearchCouponVO>> searchAll(String couponNo, Integer CCID) {
        log.info("全て検索ボタンを押下");
        // クーポン番号とCCIDが全部NULLの場合、エラーメッセージを出力する
        if (StringUtils.isBlank(couponNo) && CCID == null) {
            return Result.error("クーポン番号かCCIDを入力してください。");
        }
        List<SearchCouponVO> commonLists = searchService.searchAll(couponNo, CCID);
        if (commonLists.isEmpty()) {
            return Result.error("ERROR003 検索データは0件です。");
        }
        return Result.success(commonLists);
    }

    @GetMapping("/searchAvailable")
    @ApiOperation(value = "利用可能検索ボタンを押下")
    public Result<List<SearchCouponVO>> searchAvailable(String couponNo, Integer CCID) {
        log.info("利用可能検索ボタンを押下");
        // クーポン番号とCCIDが全部NULLの場合、エラーメッセージを出力する
        if (StringUtils.isBlank(couponNo) && CCID == null) {
            return Result.error("クーポン番号かCCIDを入力してください。");
        }
        List<SearchCouponVO> list = searchService.searchAvailable(couponNo, CCID);
        if (list.isEmpty()) {
            return Result.error("ERROR003 検索データは0件です。");
        }
        return Result.success(list);
    }

    @GetMapping("/searchOrder")
    @ApiOperation(value = "受注検索ボタンを押下")
    public Result<List<SearchCouponVO>> searchOrder(String orderNo) {
        log.info("受注検索ボタンを押下");
        // 受注番号を入力しない場合、警告ダイアログが表示する。
        if (StringUtils.isBlank(orderNo)) {
            return Result.error("受注番号を入力してください。");
        }
        List<SearchCouponVO> list = searchService.searchOrder(orderNo);
        if (list.isEmpty()) {
            return Result.error("ERROR003 検索データは0件です。");
        }
        return Result.success(list);
    }
}
